package com.lw.sbdemo2.common.utils;

import com.thoughtworks.xstream.XStream;

/**
 * <p>标题: </p>
 * <p>描述: </p>
 * <p>版权: Copyright (c) 2018</p>
 * <p>公司: 智业软件</p>
 *
 * @author LinWang
 * @date 2018-05-14 15:37
 */
public class XStreamUtil {

    private static XStream xStream;

    /**
     * JVM加载类时会执行这些静态的代码块，如果static代码块有多个，
     * JVM将按照它们在类中出现的先后顺序依次执行它们，每个代码块只会被执行一次
     */
    static {
        //XStream.setupDefaultSecurity(xStream);
        //xStream.allowTypes(new Class[]{Person.class, Address.class});
        /*
         * 使用xStream.alias(String name, Class Type)为任何一个自定义类创建到类到元素的别名
         * 如果不使用别名，则生成的标签名为类全名
         */
        //xStream.alias("person", Person.class);
        //xStream.alias("address", Address.class);

        //将某一个类的属性，作为xml头信息的属性，而不是子节点
        //xStream.useAttributeFor(Address.class, "country");

        //对属性取别名
        //xStream.aliasField("省", Address.class, "province");
    }

    /**
     * Xml字符串 TO JavaBean
     */
    public static Object xmlToBean(String xml) {
        return xStream.fromXML(xml);
    }

    /**
     * JavaBean TO Xml字符串
     */
    public static String beanToXml(Object obj) {
        return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xStream.toXML(obj);
    }
}